<?php
trait A {
    public function smallTalk() {
        echo 'a';
    }
    public function bigTalk() {
        echo 'A';
    }
}

trait B {
    public function smallTalk() {
        echo 'b';
    }
    public function bigTalk() {
        echo 'B';
    }
}

class Talker {
    use A, B {
        B::smallTalk insteadof A;//使用 B 的 smallTalk 方法替代 A 的 samllTalk 方法
        A::bigTalk insteadof B;//使用 A 的 bigTalk 的方法替代 B 的 bigTalk 方法
    }
}

class Aliased_Talker {
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;//将 B 的 bigTalk 函数重命名为 talk
    }
}

$talker = new Talker();
$talker -> smallTalk();
$talker -> bigTalk();

$alised_talker = new Aliased_Talker();
$alised_talker -> smallTalk();
$alised_talker -> bigTalk();
$alised_talker -> talk();
?>